﻿#region GNU General Public License
/*
-----------------------------------------------------------------------------
This source file is part of jscc
    (Javascript with Classes)
For the latest info, see http://code.google.com/p/jscc

Copyright (c) 2011 Tapani Valkonen

jscc is free software: you can redistribute it and/or modify it under 
the terms of the GNU General Public License as published by the 
Free Software Foundation, either version 3 of the License, or (at your option)
any later version. 
 
jscc is distributed in the hope that it will be useful, 
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 
for more details.

You should have received a copy of the GNU General Public License 
along with jscc. If not, see http://www.gnu.org/licenses/.
-----------------------------------------------------------------------------
*/
#endregion

using System;
using System.Collections.Generic;
using System.Text;

namespace jscc
{
    public class SourceLocation
    {
        private int line;
        private int ch;
        private int begin;
        private int end;
        private string filename;

        private string source;

        public SourceLocation(string filename, string source, int line, int ch, int begin)
        {
            this.filename = filename;
            this.source = source;
            this.line = line;
            this.ch = ch;

            this.begin = begin;
            this.end = begin + 1;
        }

        public int End
        {
            set { end = value; }
            get { return end;  }
        }

        public int Begin
        {
            set { begin = value; }
            get { return begin; }
        }

        public string Data
        {
            get { return source.Substring(begin, end - begin); }
        }

        public override string ToString()
        {
            return string.Format("{0}({1},{2}): ", filename, line, ch);
        }
    }
}
